package com.peng.dian;

import com.google.gson.Gson;
import com.peng.dian.entity.Person;
import com.peng.dian.entity.audioEntity;
import com.peng.dian.entity.pictureEntity;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

public class testPath {
//    static ArrayList<Object> audio = new ArrayList<>();
//    static ArrayList<Object> picture = new ArrayList<>();
    static HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
    static ArrayList<Object> audio = new ArrayList<>();
    static ArrayList<Object> picture = new ArrayList<>();
    public static void main(String[] args) {
//        try {
//            // 获取当前类文件的URL
//            URL url = testPath.class.getResource("CurrentClassPath.class");
//
//            // 将URL转换为Path对象
//            Path path = Paths.get(url.toURI());
//
//            // 获取绝对路径
//            String absolutePath = path.toString();
//            System.out.println("当前类文件的路径: " + absolutePath);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }

        // 获取当前工作目录
//        String currentWorkingDir = System.getProperty("user.dir");
//        System.out.println("当前工作目录: " + currentWorkingDir);

//        // 获取资源文件的URL
//        URL url = testPath.class.getClassLoader().getResource("application.properties");
//
//        if (url != null) {
//            try {
//                // 将URL转换为Path对象
//                Path path = Paths.get(url.toURI());
//
//                // 获取绝对路径
//                String absolutePath = path.toString();
//                System.out.println("资源文件的路径: " + absolutePath);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        } else {
//            System.out.println("资源文件未找到");
//        }

//        try {
//            // 获取当前类的ProtectionDomain
//            File jarFile = new File(testPath.class.getProtectionDomain().getCodeSource().getLocation().toURI());
//
//            // 获取绝对路径
//            String absolutePath = jarFile.getAbsolutePath();
//            System.out.println("当前JAR文件的路径: " + absolutePath);
//        } catch (URISyntaxException e) {
//            e.printStackTrace();
//        }

//        // 指定要列出文件的文件夹路径
//        //String folderPath = "I:\\后端";
////        String folderPath = "G:\\beixin_project\\远程资源\\video\\computer english lessons";
////        String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus\\banner";
//        String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus\\navigator\\navigator_banner";
////        File folder = new File("C:/example/folder");
//        // 创建文件对象
//        File folder = new File(folderPath);
//
//        // 检查文件夹是否存在且是目录
//        if (folder.exists() && folder.isDirectory()) {
//            // 获取文件夹中的所有文件和子文件夹
//            File[] files = folder.listFiles();
//
//            // 遍历文件和子文件夹
//            if (files != null) {
//                for (File file : files) {
//                    // 打印文件或子文件夹的名称
////                    System.out.println(file.getName());
//                    //System.out.println(file.getAbsoluteFile());
////                    System.out.println(file.getAbsolutePath().toString());
//                    pictureEntity pictureEntity = new pictureEntity();
//                    pictureEntity.setName(file.getAbsoluteFile().toString());
//                    Gson gson = new Gson();
//                    String json = gson.toJson(pictureEntity);
//                    System.out.println(json);
//                }
//            } else {
//                System.out.println("该文件夹是空的或者无法访问文件夹内容。");
//            }
//        } else {
//            System.out.println("指定路径不是一个有效的文件夹。");
//        }



        // 创建一个对象
//        Person person = new Person("John", 30, "john@example.com");
//
//        // 创建 Gson 对象
//        Gson gson = new Gson();
//
//        // 将对象转换为 JSON 字符串
//        String json = gson.toJson(person);
//
//        // 输出 JSON 字符串
//        System.out.println(json);

        // 指定要遍历的文件夹路径
//        String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus\\banner";
        //String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus\\navigator\\navigator_banner";
//        String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus\\navigator";
//
//
        String folderPath = "G:\\beixin_project\\远程资源\\digtalcampus";
        //String folderPath = "your/folder/path";

        // 创建 File 对象
        File folder = new File(folderPath);
        // 遍历文件夹
        listFiles(folder);
        objectObjectHashMap.put("audio",audio);
        objectObjectHashMap.put("picuture",picture);
//        return objectObjectHashMap;
//        System.out.println(objectObjectHashMap.get("audio"));
//        System.out.println(objectObjectHashMap.get("picuture"));

        System.out.println(objectObjectHashMap.get("audio"));
        System.out.println(objectObjectHashMap.get("picuture"));
        System.out.println(objectObjectHashMap);
//        String jpgObject="G:\\beixin_project\\远程资源\\digtalcampus\\teachers\\xinwenyuan\\4.jpg";
//        String pngObject="G:\\beixin_project\\远程资源\\digtalcampus\\teachers\\xingongyuan\\4.png";
//        String m4aObject="G:\\beixin_project\\远程资源\\digtalcampus\\navigator\\audio\\13.m4a";

        // 判断是否图片文件
//        if (isImage(m4aObject)) {
//            System.out.println(m4aObject + " 是图片文件");
//        } else {
//            System.out.println(m4aObject + " 不是图片文件");
//        }

        // 判断是否音频文件
//        if (isAudio(m4aObject)) {
//            System.out.println(jpgObject + " 是音频文件");
//        } else {
//            System.out.println(jpgObject + " 不是音频文件");
//        }
    }

    public static void listFiles(File folder) {

        // 获取文件夹中的所有文件和子文件夹
        File[] files = folder.listFiles();

        // 遍历文件和子文件夹
        if (files != null) {
            for (File file : files) {
                // 如果是文件，则打印文件路径
                if (file.isFile()) {
                    //System.out.println("文件: " + file.getAbsolutePath());

                    if (isImage(file.getAbsolutePath())){
                     //图片
                        pictureEntity pictureEntity = new pictureEntity();
                        pictureEntity.setName(file.getAbsoluteFile().toString());
                        Gson gson = new Gson();
                        String json = gson.toJson(pictureEntity);
                        picture.add(json);
                    }
                    if (isAudio(file.getAbsolutePath())){
                    //音频
                        audioEntity audioEntity = new audioEntity();
                        audioEntity.setName(file.getAbsoluteFile().toString());
                        Gson gson = new Gson();
                        String json = gson.toJson(audioEntity);
                        audio.add(json);
                        //System.out.println(json);

                    }
                }
                // 如果是目录，则递归调用 listFiles 方法
                else if (file.isDirectory()) {
                    listFiles(file);
                }
            }
        }
    }

    // 判断是否图片文件
    public static boolean isImage(String filename) {
        String regex = "(?i).+\\.(jpg|jpeg|png|gif|bmp)$"; // 忽略大小写
        return filename.matches(regex);
    }

    // 判断是否音频文件
    public static boolean isAudio(String filename) {
        String regex = "(?i).+\\.(m4a|mp3|wav|flac|aac|ogg)$"; // 忽略大小写
        return filename.matches(regex);
    }


}
